home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 7 / Gekikoh Dennoh Club Vol. 7 (Japan).7z / Gekikoh Dennoh Club Vol. 7 (Japan) (Track 01).bin / games / otoko / source.lzh / FuncEnemy / lboss03u.c < prev    next >
C/C++ Source or Header  |  1999-06-14  |  2KB  |  116 lines

  1. /* 3面ボスザコ・その2 (03u = 03 up) */
  2. /* ボスが出てきてから画面下から登場して合体するまで */
  3. #include <xsp2lib.h>
  4.  
  5. #include "../otoko.h"
  6. #include "../player.h"
  7. #include "../enemy.h"
  8. #include "../eshot.h"
  9. #include "../effect.h"
  10. #include "../priority.h"
  11.  
  12.  
  13. #define SPEED_1        31    /* 加速度 */
  14. #define SPEED_1N    10    /* 加速度を足す回数 */
  15.  
  16. #define BOSS_X    144
  17. #define BOSS_Y    122
  18.  
  19. static short EnemyMoveLBoss03U (ENEMY *);
  20. static void EnemyTiniLBoss03U (ENEMY *);
  21.  
  22.  
  23. void EnemyInitLBoss03U (ENEMY * p)
  24. {
  25.     p->vx = 0;
  26.  
  27.     p->hit_px = p->hit_py = p->hit_sx = p->hit_sy = p->hit_cx = 0;
  28.     p->timer = 0;
  29.     p->damage = 0;
  30.     p->flash = 0;
  31.     p->seq = 0;
  32.     p->pt = obj_lboss03 + 8;
  33.     p->core_pt = sp_core01;
  34.     p->core_info = PALET_CORE_BLUE | PRIORITY_BOSS_PARTS_L;
  35.     p->m_work = 0;
  36.     p->func_enemy_move = EnemyMoveLBoss03U;
  37.     p->func_enemy_tini = EnemyTiniLBoss03U;
  38.  
  39.     if (p->arg < 4) {
  40.         p->info = PALET_LBOSS03 | PRIORITY_BOSS_PARTS_L;
  41.     } else {
  42.         p->arg -= 4;
  43.         p->info = PALET_LBOSS03_1 | PRIORITY_BOSS_PARTS_L;
  44.     }
  45.     switch (p->arg) {
  46.     case 0:
  47.     case 1:
  48.         p->vy = (-8 << 16);
  49.         break;
  50.     case 2:
  51.     case 3:
  52.         p->vy = (-7 << 16);
  53.         break;
  54.     }
  55. }
  56.  
  57.  
  58.  
  59. static short EnemyMoveLBoss03U (ENEMY * p)
  60. {
  61.     /* 速度を足して上位ワード(固定整数部)だけ取り出す */
  62.     p->x = (p->lx += p->vx) >> 16;
  63.     p->y = (p->ly += p->vy) >> 16;
  64.  
  65.     switch (p->seq) {
  66.     case 0:        /* 登場直後、減速する */
  67.         switch (p->arg) {
  68.         case 0:
  69.         case 1:
  70.             if (SHORT_LY < 210) {
  71.                 p->vy += 16384;
  72.                 if (SHORT_VY > 0) {
  73.                     p->vy = 0;
  74.                     p->seq++;
  75.                 }
  76.             }
  77.             break;
  78.         case 2:
  79.         case 3:
  80.             if (SHORT_LY < 244) {
  81.                 p->vy += 16384;
  82.                 if (SHORT_VY > 0) {
  83.                     p->vy = 0;
  84.                     p->seq++;
  85.                 }
  86.             }
  87.             break;
  88.         }
  89.         break;
  90.     case 1:        /* lboss03.c で p->seq++ されるのを待つ */
  91.         break;
  92.     case 2:
  93.         return (-1);    /* 消去 */
  94.         break;
  95.     }
  96.  
  97.  
  98.     xobj_set_st (p);
  99.  
  100.  
  101.     /* コアの表示 */
  102.     p->core_info = PALET_CORE_BLUE | PRIORITY_BOSS;
  103.     p->core_x = p->x - 8;    /* コアの中心は (-8,-8) ドットずれる */
  104.     p->core_y = p->y;
  105.     xsp_set_st (&(p->core_x));
  106.  
  107.  
  108.     return (0);
  109. }
  110.  
  111.  
  112.  
  113. static void EnemyTiniLBoss03U (ENEMY * p)
  114. {
  115. }
  116.